package com.sunshine.effctive.chapter02.item6;

/**
 * 计算所有正整数的总和
 * 优先使用基本类型而不是装箱的基本类型，也要注意无意识的自动装箱。
 *
 * @author WeiHong
 * @date 2019/11/21 14:42
 */
public class Sum {

    private static long sum() {
        //变量 sum 被声明成了 Long 而不是 long，这意味着程序构造了大约 2^31 次不必要的 Long 实例
        //因此使用long
        long sum = 0L;
        for (int i = 0; i <= Integer.MAX_VALUE; i++) {
            sum += i;
        }
        return sum;
    }


    public static void main(String[] args) {
        int numSets = 100;
        for (int i = 0; i < numSets; i++) {
            long start = System.nanoTime();
            long x = sum();
            long end = System.nanoTime();
            System.out.println((end - start) / 1_000_000. + " ms.");
        }
    }
}
